Components installed on computing systems or computing devices (such as application software, operating systems, firmware and the like) sometimes need to be upgraded or rebuilt to fix bugs, improve existing features and/or introducing new features or releases. The determination of which particular upgrade to be deployed to a particular host often depends on various characteristics of the host such as computer architecture, operating system, geographic region and the like. Traditionally, such determination has been performed manually. However, for large and complex upgrade deployments involving many upgrades and hosts, such manual determination is likely to become cumbersome and error-prone.